[Bayesian] MCMC回顾

这是一篇关于MCMC算法的回顾

Posted by Leung ZhengHua on 2017-09-24

本文总点击量

阅读本文之前,你可能对以下资源帖感兴趣:

MCMC中的Metropolis–Hastings算法与吉布斯采样
蒙特卡洛采样之拒绝采样(Reject Sampling)
LDA-math-MCMC 和 Gibbs Sampling
MCMC 案例学习
R语言与Markov Chain Monte Carlo(MCMC)方法学习笔记(1)
R语言与Markov Chain Monte Carlo(MCMC)方法学习笔记(2)
《Gibbs Sampling for the UniniTiated》阅读笔记
gibbs sampling.ppt


从正态分布说起

假如我们拿到一组正态分布的数据,对它的均值和方差都没有任何信息时。要想得到感兴趣的$\mu$的分布情况,可以用以下三种方法模拟$\mu$的分布:

1 计算$\mu$的边际后验分布

需要将$(\mu,\sigma ^2)$的联合后验分布中的$\sigma^2$积分积掉。简化之后的结果可以得到$\frac{\mu -\overline{x}}{s/\sqrt{n}}|\mathbf{x}\sim t(n-1)$,这说明我们可以生成t分布的随机数,根据已经计算的样本均值$\overline{x}$和样本标准差$s$,可以逆推回去得到$\mu$值,由此可以模拟得到$\mu$的分布情况。

2 分解联合后验分布

其中,$\frac{(n-1)s^2}{\sigma^2}|\mathbf{x}\sim\chi ^2(n-1)$,$(\mu|\sigma^2,\mathbf{x})\sim N(\overline{x},\sigma ^2/n)$.

上面密度函数分解的式子告诉我们,如果得到了$\pi(\sigma^2|\mathbf{x})$的分布,那我们可以从这个分布抽出一个值,固定在这个值下继续抽$\pi(\mu|\sigma^2,\mathbf{x})$分布中的$\mu$值,重复这个过程,生成的$(\mu,\sigma^2)$的分布就是上式的联合分布密度函数。简化之后的抽样步骤为:

  • 从自由度为$n-1$的卡方分布中抽取$Y$,令$\sigma^2=(n-1)s^2/Y$

  • 对给定$\sigma^2$,从正态分布$N(\overline{x},\sigma^2/n)$抽取$\mu$

重复上述过程,可以得到$(\mu,\sigma^2)$的后验样本,根据后验样本就可以画出直方图和得到分布的其他特征了。

3 计算满条件后验分布

操作步骤如下(算法):

  • 设定初值$(\mu^{(0)},(\sigma^2)^{(0)})$
  • 从卡方分布$\chi ^2 {(n)}$产生随机数$Y$,并令$(\sigma^2)^{(t+1)}=\frac{(n-1)s^2+n(\bar{x}-\mu^{(t)})^2}{Y}$
  • 由正态分布$N(\bar x,(\sigma^2)^{(t+1)}/\sqrt n)$产生$\mu^{(t+1)}$
  • 重复步骤2和3,得到后验样本